<?php 
	/*
		步骤分析：
	 		1 静态页面处理
	 			- 将html文件修改为php文件
				- 设置form的action、method、enctype
				- 设置表单元素的name属性
				- 确认相关结构

	 		2 检测表单是否完整提交

	 		3 设置错误展示

	 		4 进行数据保存
	 */

	//文件上传
	function upload(){
		$error=NULL;			//错误信息;默认为NULL
		$music_name=NULL;		//音乐文件保存路径;默认为NULL
		if(empty($_FILES["source"]['name'])  || $_FILES["source"]["error"]!=0){
			$error="没有上传文件";
		}else{
			$music_name="./mp3/".time().strrchr($_FILES["source"]["name"],'.');
			$res=move_uploaded_file($_FILES["source"]["tmp_name"],$music_name);
		}
		return array(
			'src'=>$music_name,
			'error'=>$error
		);
	}

	// 通过函数来实现所有的操作
	function addSong(){
		//创建数组,存储错误信息
		$errorArr=[];
		//array('title',"geshou","zhuanji")
		// 验证用户数据
		// 1.判断是否有输入          2.判断有输入但是输入的是否是空格字符串
		if(!isset($_POST["title"]) || trim($_POST["title"]) === ""){
			$errorArr[] = "没有输入标题";
		}
		if(!isset($_POST["geshou"]) || trim($_POST["geshou"]) === ""){
			$errorArr[] = "没有输入歌手";
		}
		if(!isset($_POST["zhuanji"]) || trim($_POST["zhuanji"]) === ""){
			$errorArr[] = "没有输入专辑";
		}

		//调用上传文件
		$arr_upload=upload();
	
		if(!empty($arr_upload['error'])){
			$errorArr[]=$arr_upload['error'];  //没有上传文件		
		}

		// 处理用户的错误信息:如果之前创建了$errorArr,那么就说明用户的数据是有错误的
		if(!empty($errorArr)){
			$GLOBALS["err_arr"] = $errorArr;
			// return;			//让后续代码不再执行
		}else{
			// 2.将数据写入到json文件中
			$data = file_get_contents("music.json");
			// 所有歌曲列表数组
			$dataArr = json_decode($data,true);
			// 2.1收集用户数据
			$newSong = array(
				// 生成id号：读取文件，将文件转换为数组，再获取数组中的最后一个元素的id号+1
				// "id"=>count($dataArr) == 0 ? 1 : $dataArr[count($dataArr)-1]["id"]+1,
				"id"=>time().rand(111,999),
				"title"=>$_POST['title'],
				"singer"=>$_POST['geshou'],
				"album"=>$_POST['zhuanji'],
				"src"=>$arr_upload['src']
			);
			// 实现写入操作：将新增的数据添加到歌曲列表数组中，再将歌曲列表数组写入到文件
			$dataArr[] = $newSong;
			// 使用file_put_contents方法写入数据
			file_put_contents("music.json",json_encode($dataArr));
			// 实现页面的跳转：虽然在php中无法使用location来实现页面的跳转，但是浏览器端却识别这个操作，所以我们可以将这个操作的代码返回到浏览器，让浏览器来执行这个操作
			// echo '<script>location.href="list.php";</script>';
			// 页面从定向方式2
			header("Location:list.php");
		}
		
	}

	//检测请求方式：	
	if ($_SERVER['REQUEST_METHOD'] === 'POST') {
		addSong();
	}
	else{
		//为了GET请求时不出现报错，设置的一个变量
		$GLOBALS["err_arr"]=[];
	}

	// 引入视图页面
	require_once 'views/upload_tpl.php';
 ?>
 
